package com.stu.day10.SOLID;

/**
 * 子类可替代父类：子类应当能够替换父类出现在任何地方，程序行为不发生变化。
 * 不改变父类的预期行为：子类不能违反父类的方法约定或行为，不能改变父类已有的功能。
 * 子类继承父类的功能：子类可以扩展父类的功能，但不能去除或改变父类的核心功能。
 * 保证程序一致性：替换父类为子类时，程序的运行应该正常，不应该出现异常或不符合预期的行为。
 * 总结：子类要在不改变父类行为的前提下，扩展或实现父类的功能，使得子类能够平滑地替代父类。
 * @author zy
 * @date 2025/2/1 18:24
 */
// 只定义能够飞的鸟
interface FlyingBird {
    void fly();
}

class Bird2 {
    public void eat() {
        System.out.println("Eating");
    }
}

class Sparrow extends Bird2 implements FlyingBird {
    @Override
    public void fly() {
        System.out.println("I am flying");
    }
}

class Penguin2 extends Bird2 {
    public void swim() {
        System.out.println("I am swimming");
    }
}

